home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 6 / The Arsenal Files 6 (Arsenal Computer).ISO / spitfire / bfpagepc.zip / BFPAGE.PAS < prev    next >
Pascal/Delphi Source File  |  1994-12-15  |  19KB  |  407 lines

  1. Program BFPAGE_PLUS_PLUS;
  2. { The Blue Force Sysop Page Utility
  3.   (C) 1994 Brian Leiter
  4.   01/01/95  Version 2.1ß   }
  5.  
  6. Uses Crt,DOS,Strings;
  7.  
  8. TYPE
  9.   NodeSysRec = Record   {Read in the SFNODE.DAT}
  10.                DirectScrn,
  11.                ShowResult       : Boolean;
  12.                RAMDrive         : Char;
  13.                PrinterOn,
  14.                AnsiAvl,
  15.                Private,
  16.                SecondPassword,
  17.                Page_On          : Boolean;
  18.                MinimumBaud      : Word;
  19.                MsgInfo,
  20.                NewFileInfo,
  21.                SoftControl,
  22.                AvailableBoo     : Boolean;
  23.                CorrectionMsg    : String[3];
  24.                WorkPath,
  25.                DisplayPath,
  26.                ExtranPath,
  27.                MsgPath          : String[28];
  28.                ModIntStr        : String[56];
  29.                ComPort          : Word;
  30.                RingNo,
  31.                Node             : Byte;
  32.                MaxBaud,
  33.                ExtraLong        :LongInt;
  34.                TimeComp         :Real;
  35.                LastDate         :String[8];
  36.                PrivateSec       :Integer;
  37.                HangUpDelay      :Byte;
  38.                UseHiSpeed,
  39.                AvailBoolean     :Boolean;
  40.                IRQ1,
  41.                IRQ2,
  42.                IRQ3,
  43.                IRQ4,
  44.                IRQ5,
  45.                IRQ6,
  46.                IRQ7,
  47.                IRQ8             :Byte;
  48.                BreakLen         :Word;
  49.                FAXConnectMsg    :String[7];
  50.                PreInitStr       :String[6];
  51.                SubChgSec        :Word;
  52.                StartWarn        :Byte;
  53.                ExtraBytes       :Array[0..3] Of Byte;
  54.                ColorMonitor     :Boolean;
  55.                OffHookStr       :String[6];
  56.                ComBase          :Array[1..8] Of Word;
  57.                AnswerStr        :String[30];
  58.                NewExtra         :Array[0..201] Of Byte;
  59.                End;
  60.  
  61. TYPE
  62.   RegistrationKey = Record      { Record File Information }
  63.                     C1,C2,C3    : Char;
  64.                     SysopName   : String[25];
  65.                     BBSName     : String[30];
  66.                     RegNumber   : String[6];
  67.                     RegMode     : Boolean;
  68.                     Seed1       : String[83];
  69.                     End;
  70.  
  71. VAR
  72.   UF        : File Of NodeSysRec;
  73.   Page      : NodeSysRec;
  74.   Info      : File Of RegistrationKey;
  75.   Reg       : RegistrationKey;
  76.   RegStatus : Boolean;
  77.   R1,R2,R3  : Integer;
  78.   I         : Integer;
  79.  
  80. Procedure RegistrationInfo;        { The Procedure Section }
  81. Begin
  82.   RegStatus := False;
  83.   Assign (Info,'BFPAGE.KEY');
  84.   FileMode := 0;
  85.   {$I-} Reset(Info) {$I+};
  86.   If IOResult<>0 Then
  87.     Begin
  88.       Writeln('■ Keyfile Not Found!');
  89.       Writeln('■ Halting Program!');
  90.       Sound(900);Delay(350);NoSound;
  91.       Halt(2);
  92.     End;
  93.   Read(info,reg);
  94.   R1 := 215;          { Program Code }
  95.   R2 := 149;          { Validation Code }
  96.   R3 := 43;          { Crypton Code }
  97.   If (R1 = Ord(Reg.C1)) and (R2 = Ord(Reg.C2))
  98.      and (R3 = Ord(Reg.C3))
  99.      and (Reg.RegMode = True) then RegStatus := True;
  100. End;
  101.  
  102. Procedure MakeMyLogo;
  103.   Begin;
  104.     TextColor(15);
  105.     TextBackGround(4);
  106.     Writeln('╔══════════════════════════════════════╗');
  107.     Writeln('║ -■ BFPAGE++ A Sysop Multi-Utility ■- ║');
  108.     Writeln('║                                      ║');
  109.       If RegStatus = True Then Writeln('║ Compiled: 01-01-95    * REGISTERED * ║');
  110.       If RegStatus = False Then Writeln('║ Compiled: 01-01-95    NOT REGISTERED ║');
  111.     Writeln('║                                      ║');
  112.     Writeln('║ (C) 1994 Brian Leiter          v2.1ß ║');
  113.     Writeln('╚══════════════════════════════════════╝');
  114.     TextBackGround(0);
  115.     TextColor(14);
  116.   End;
  117.  
  118. Procedure PageOnBulletin;  {Create PAGE ON ASCII Bulletin}
  119. Var  F         : Text;
  120.   Begin
  121.     Assign(F, (Page.DisplayPath)+(ParamStr(ParamCount))+'.BBS');
  122.     If (ParamStr(ParamCount) = '/P+') or (ParamStr(ParamCount) = '/p+') or
  123.        (ParamStr(ParamCount) = '/P-') or (ParamStr(ParamCount) = '/p-') or
  124.        (ParamStr(ParamCount) = '/PR+') or (ParamStr(ParamCount) = '/pr+') or
  125.        (ParamStr(ParamCount) = '/PR-') or (ParamStr(ParamCount) = '/pr-') or
  126.        (ParamStr(ParamCount) = '/SP+') or (ParamStr(ParamCount) = '/sp+') or
  127.        (ParamStr(ParamCount) = '/SP-') or (ParamStr(ParamCount) = '/sp-') or
  128.        (ParamStr(ParamCount) = '/PP+') or (ParamStr(ParamCount) = '/pp+') or
  129.        (ParamStr(ParamCount) = '/PP-') or (ParamStr(ParamCount) = '/pp-')
  130.         then Assign(F,(Page.DisplayPath)+'ALL.BBS');
  131.     Rewrite(F);
  132.     Writeln(f,'              ');
  133.     Writeln(f,'');
  134.     Writeln(f,'');
  135.     Writeln(f,'');
  136.     Writeln(f,'');
  137.     Writeln(f,'');
  138.     Writeln(f,'             ┌─[ BFPAGE v2.1ß ]───────────────────────────────┐');
  139.     Writeln(f,'             │┌──────────────────────────────────────────────┐│');
  140.     Writeln(f,'             ││                                              ││');
  141.     Writeln(f,'             ││   ┌──────────────────────────────────────┐   ││');
  142.     Writeln(f,'             ││   │ The Sysop Page Feature Is Turned On! │   ││');
  143.     Writeln(f,'             ││   └──────────────────────────────────────┘   ││');
  144.     Writeln(f,'             ││                                              ││');
  145.     Writeln(f,'             │└──────────────────────────────────────────────┘│');
  146.       If RegStatus = True Then Writeln(f,'             └─────────────────────────────[ * REGISTERED * ]─┘');
  147.       If RegStatus = False Then Writeln(f,'             └─────────────────────────────[ NOT REGISTERED ]─┘');
  148.     Writeln(f,'             ');
  149.     Close(F);   { Close file, save changes }
  150.  
  151. {Make PAGE ON ANSI Bulletin}
  152.     Assign(F, (Page.DisplayPath)+(ParamStr(ParamCount))+'.CLR');
  153.     If (ParamStr(ParamCount) = '/P+') or (ParamStr(ParamCount) = '/p+') or
  154.        (ParamStr(ParamCount) = '/P-') or (ParamStr(ParamCount) = '/p-') or
  155.        (ParamStr(ParamCount) = '/PR+') or (ParamStr(ParamCount) = '/pr+') or
  156.        (ParamStr(ParamCount) = '/PR-') or (ParamStr(ParamCount) = '/pr-') or
  157.        (ParamStr(ParamCount) = '/SP+') or (ParamStr(ParamCount) = '/sp+') or
  158.        (ParamStr(ParamCount) = '/SP-') or (ParamStr(ParamCount) = '/sp-') or
  159.        (ParamStr(ParamCount) = '/PP+') or (ParamStr(ParamCount) = '/pp+') or
  160.        (ParamStr(ParamCount) = '/PP-') or (ParamStr(ParamCount) = '/pp-')
  161.         then Assign(F,(Page.DisplayPath)+'ALL.CLR');
  162.     Rewrite(F);
  163.     Writeln(f,'');
  164.     Writeln(f,'C D  D D');
  165.     Writeln(f,'');
  166.     Writeln(f,'');
  167.     Writeln(f,'');
  168.     Writeln(f,'');
  169.     Writeln(f,'');
  170.     Writeln(f,'C┌─[ BFPAGE v2.1ß ]───────────────────────────────');
  171.     Writeln(f,'C┌──────────────────────────────────────────────');
  172.     Writeln(f,'C│ ┌────────────────────────────────────────── ');
  173. Writeln(f,'C│ │ ┌──────────────────────────────────────┐  ');
  174. Writeln(f,'C│ │ │ The Sysop Page Feature Is Turned On! │  │');
  175. Writeln(f,'C│ │ ──────────────────────────────────────┘  ');
  176.     Writeln(f,'C│ ──────────────────────────────────────────┘ ');
  177.     Writeln(f,'C──────────────────────────────────────────────┘');
  178.       If RegStatus = True Then
  179.     Writeln(f,'C─────────────────────────────[ * REGISTERED * ]─┘');
  180.       If RegStatus = False Then
  181.     Writeln(f,'C─────────────────────────────[ NOT REGISTERED ]─┘');
  182.     Writeln(f,'C D');
  183.     Close(F);   { Close file, save changes }
  184.   end;
  185.  
  186. Procedure PageOffBulletin;  {Create PAGE OFF ASCII Bulletin}
  187. Var F         : Text;
  188.   begin
  189.     Assign(F, (Page.DisplayPath)+(ParamStr(ParamCount))+'.BBS');
  190.     If (ParamStr(ParamCount) = '/P+') or (ParamStr(ParamCount) = '/p+') or
  191.        (ParamStr(ParamCount) = '/P-') or (ParamStr(ParamCount) = '/p-') or
  192.        (ParamStr(ParamCount) = '/PR+') or (ParamStr(ParamCount) = '/pr+') or
  193.        (ParamStr(ParamCount) = '/PR-') or (ParamStr(ParamCount) = '/pr-') or
  194.        (ParamStr(ParamCount) = '/SP+') or (ParamStr(ParamCount) = '/sp+') or
  195.        (ParamStr(ParamCount) = '/SP-') or (ParamStr(ParamCount) = '/sp-') or
  196.        (ParamStr(ParamCount) = '/PP+') or (ParamStr(ParamCount) = '/pp+') or
  197.        (ParamStr(ParamCount) = '/PP-') or (ParamStr(ParamCount) = '/pp-')
  198.         then Assign(F,(Page.DisplayPath)+'ALL.BBS');
  199.     Rewrite(F);
  200.     Writeln(f,'              ');
  201.     Writeln(f,'');
  202.     Writeln(f,'');
  203.     Writeln(f,'');
  204.     Writeln(f,'');
  205.     Writeln(f,'');
  206.     Writeln(f,'             ┌─[ BFPAGE v2.1ß ]───────────────────────────────┐');
  207.     Writeln(f,'             │┌──────────────────────────────────────────────┐│');
  208.     Writeln(f,'             ││                                              ││');
  209.     Writeln(f,'             ││   ┌──────────────────────────────────────┐   ││');
  210.     Writeln(f,'             ││   │ The Sysop Page Feature Is Turned Off │   ││');
  211.     Writeln(f,'             ││   └──────────────────────────────────────┘   ││');
  212.     Writeln(f,'             ││                                              ││');
  213.     Writeln(f,'             │└──────────────────────────────────────────────┘│');
  214.       If RegStatus = True Then Writeln(f,'             └─────────────────────────────[ * REGISTERED * ]─┘');
  215.       If RegStatus = False Then Writeln(f,'             └─────────────────────────────[ NOT REGISTERED ]─┘');
  216.     Writeln(f,'             ');
  217.     Close(F);   { Close file, save changes }
  218.  
  219. {Make PAGE OFF ANSI Bulletin}
  220.     Assign(F, (Page.DisplayPath)+(ParamStr(ParamCount))+'.CLR');
  221.     If (ParamStr(ParamCount) = '/P+') or (ParamStr(ParamCount) = '/p+') or
  222.        (ParamStr(ParamCount) = '/P-') or (ParamStr(ParamCount) = '/p-') or
  223.        (ParamStr(ParamCount) = '/PR+') or (ParamStr(ParamCount) = '/pr+') or
  224.        (ParamStr(ParamCount) = '/PR-') or (ParamStr(ParamCount) = '/pr-') or
  225.        (ParamStr(ParamCount) = '/SP+') or (ParamStr(ParamCount) = '/sp+') or
  226.        (ParamStr(ParamCount) = '/SP-') or (ParamStr(ParamCount) = '/sp-') or
  227.        (ParamStr(ParamCount) = '/PP+') or (ParamStr(ParamCount) = '/pp+') or
  228.        (ParamStr(ParamCount) = '/PP-') or (ParamStr(ParamCount) = '/pp-')
  229.         then Assign(F,(Page.DisplayPath)+'ALL.CLR');
  230.     Rewrite(F);
  231.     Writeln(f,'');
  232.     Writeln(f,'C D  D D');
  233.     Writeln(f,'');
  234.     Writeln(f,'');
  235.     Writeln(f,'');
  236.     Writeln(f,'');
  237.     Writeln(f,'');
  238.     Writeln(f,'C┌─[ BFPAGE v2.1ß ]───────────────────────────────');
  239.     Writeln(f,'C┌──────────────────────────────────────────────');
  240.     Writeln(f,'C│ ┌────────────────────────────────────────── ');
  241. Writeln(f,'C│ │ ┌──────────────────────────────────────┐  ');
  242. Writeln(f,'C│ │ │ The Sysop Page Feature Is Turned Off │  │');
  243. Writeln(f,'C│ │ ──────────────────────────────────────┘  ');
  244.     Writeln(f,'C│ ──────────────────────────────────────────┘ ');
  245.     Writeln(f,'C──────────────────────────────────────────────┘');
  246.       If RegStatus = True Then
  247.     Writeln(f,'C─────────────────────────────[ * REGISTERED * ]─┘');
  248.       If RegStatus = False Then
  249.     Writeln(f,'C─────────────────────────────[ NOT REGISTERED ]─┘');
  250.     Writeln(f,'C D');
  251.     Close(F);   { Close file, save changes }
  252.   end;
  253.  
  254. Procedure ChangeStatus;
  255.   begin
  256.     If (ParamStr(1) = '/P+') or (ParamStr(1) = '/p+') then Page.Page_On := True;
  257.     If (ParamStr(1) = '/P-') or (ParamStr(1) = '/p-') then Page.Page_On := False;
  258.     If (ParamStr(1) = '/PR+') or (ParamStr(1) = '/pr+') then Page.PrinterOn := True;
  259.     If (ParamStr(1) = '/PR-') or (ParamStr(1) = '/pr-') then Page.PrinterOn := False;
  260.     If (ParamStr(1) = '/PP+') or (ParamStr(1) = '/pp+') then Page.Private := True;
  261.     If (ParamStr(1) = '/PP-') or (ParamStr(1) = '/pp-') then Page.Private := False;
  262.     If (ParamStr(1) = '/SP+') or (ParamStr(1) = '/sp+') then Page.SecondPassword := True;
  263.     If (ParamStr(1) = '/SP-') or (ParamStr(1) = '/sp-') then Page.SecondPassword := False;
  264.     If (ParamStr(2) = '/P+') or (ParamStr(2) = '/p+') then Page.Page_On := True;
  265.     If (ParamStr(2) = '/P-') or (ParamStr(2) = '/p-') then Page.Page_On := False;
  266.     If (ParamStr(2) = '/PR+') or (ParamStr(2) = '/pr+') then Page.PrinterOn := True;
  267.     If (ParamStr(2) = '/PR-') or (ParamStr(2) = '/pr-') then Page.PrinterOn := False;
  268.     If (ParamStr(2) = '/PP+') or (ParamStr(2) = '/pp+') then Page.Private := True;
  269.     If (ParamStr(2) = '/PP-') or (ParamStr(2) = '/pp-') then Page.Private := False;
  270.     If (ParamStr(2) = '/SP+') or (ParamStr(2) = '/sp+') then Page.SecondPassword := True;
  271.     If (ParamStr(2) = '/SP-') or (ParamStr(2) = '/sp-') then Page.SecondPassword := False;
  272.     If (ParamStr(3) = '/P+') or (ParamStr(3) = '/p+') then Page.Page_On := True;
  273.     If (ParamStr(3) = '/P-') or (ParamStr(3) = '/p-') then Page.Page_On := False;
  274.     If (ParamStr(3) = '/PR+') or (ParamStr(3) = '/pr+') then Page.PrinterOn := True;
  275.     If (ParamStr(3) = '/PR-') or (ParamStr(3) = '/pr-') then Page.PrinterOn := False;
  276.     If (ParamStr(3) = '/PP+') or (ParamStr(3) = '/pp+') then Page.Private := True;
  277.     If (ParamStr(3) = '/PP-') or (ParamStr(3) = '/pp-') then Page.Private := False;
  278.     If (ParamStr(3) = '/SP+') or (ParamStr(3) = '/sp+') then Page.SecondPassword := True;
  279.     If (ParamStr(3) = '/SP-') or (ParamStr(3) = '/sp-') then Page.SecondPassword := False;
  280.     If (ParamStr(4) = '/P+') or (ParamStr(4) = '/p+') then Page.Page_On := True;
  281.     If (ParamStr(4) = '/P-') or (ParamStr(4) = '/p-') then Page.Page_On := False;
  282.     If (ParamStr(4) = '/PR+') or (ParamStr(4) = '/pr+') then Page.PrinterOn := True;
  283.     If (ParamStr(4) = '/PR-') or (ParamStr(4) = '/pr-') then Page.PrinterOn := False;
  284.     If (ParamStr(4) = '/PP+') or (ParamStr(4) = '/pp+') then Page.Private := True;
  285.     If (ParamStr(4) = '/PP-') or (ParamStr(4) = '/pp-') then Page.Private := False;
  286.     If (ParamStr(4) = '/SP+') or (ParamStr(4) = '/sp+') then Page.SecondPassword := True;
  287.     If (ParamStr(4) = '/SP-') or (ParamStr(4) = '/sp-') then Page.SecondPassword := False;
  288.     Reset(UF);
  289.     Write(UF,Page);
  290.     GOTOXY(2,9);
  291.     Write('■ BFPAGE++  BBS System Status Report ■');
  292.     Textcolor(10);
  293.     Gotoxy(2,11);
  294.       if Page.Page_On = True then
  295.         begin
  296.           Write ('■ Sysop Paging Is Turned.......... ');
  297.           Textcolor(15);Write('On!');
  298.         end;
  299.       if Page.Page_On = False then Write ('■ Sysop Paging Is Turned.......... Off');
  300.     Gotoxy(2,12);
  301.     Textcolor(12);
  302.       if Page.SecondPassword = True then
  303.         begin
  304.           Write ('■ Second Password Is Turned....... ');
  305.           Textcolor(15);Write('On!');
  306.         end;
  307.       if Page.SecondPassword = False then Write ('■ Second Password Is Turned....... Off');
  308.     Gotoxy(2,13);
  309.     Textcolor(11);
  310.       if Page.Private = True then
  311.         begin
  312.           Write ('■ Private BBS Is Turned........... ');
  313.           Textcolor(15);Write('On!');
  314.         end;
  315.       if Page.Private = False then  Write ('■ Private BBS Is Turned........... Off');
  316.     Gotoxy(2,14);
  317.     Textcolor(13);
  318.       if Page.PrinterOn = True then
  319.         begin
  320.           Write ('■ Print Log File Is Turned........ ');
  321.           Textcolor(15);Write('On!');
  322.         end;
  323.       if Page.PrinterOn = False then Write ('■ Print Log File Is Turned........ Off');
  324.     if (ParamStr(1) = '/P+') or (ParamStr(1) = '/p+') or (ParamStr(2) = '/P+') or (ParamStr(2) = '/p+')
  325.        or (ParamStr(3) = '/P+') or (ParamStr(3) = '/p+') or (ParamStr(4) = '/P+') or (ParamStr(4) = '/p+')
  326.        then PageOnBulletin;
  327.     if (ParamStr(1) = '/P-') or (ParamStr(1) = '/p-') or (ParamStr(2) = '/P-') or (ParamStr(2) = '/p-')
  328.        or (ParamStr(3) = '/P-') or (ParamStr(3) = '/p-') or (ParamStr(4) = '/P-') or (ParamStr(4) = '/p-')
  329.        then PageOffBulletin;
  330.     Gotoxy(1,15);
  331. end;
  332.  
  333. Procedure ParamError;
  334. begin
  335.   clrscr;
  336.   Sound(900);
  337.   Writeln('Command Line Paramater Error...');
  338.   Writeln(' ');
  339.   Writeln('Usage = BFPAGE.EXE [Switch] [Switch] [Switch] [Switch] (Bulletin Name)');
  340.   Writeln(' ');
  341.   Writeln('Enter:  BFPAGE.EXE /H for help');
  342.   Delay(250);
  343.   NoSound;
  344.   Halt(1);
  345. end;
  346.  
  347. Procedure HelpScreen;
  348. begin
  349.   clrscr;
  350.   Writeln('BFPAGE++ Command Line Help:');
  351.   Writeln(' ');
  352.   Writeln('Usage = BFPAGE.EXE [Switch] [Switch] [Switch] [Switch] (Bulletin Name)');
  353.   Writeln(' ');
  354.   Writeln('SWITCHES:');
  355.   Writeln('           /P+   <--- Turns The Sysop Page Feature "ON"');
  356.   Writeln('           /P-   <--- Turns The Sysop Page Feature "OFF"');
  357.   Writeln('           /PR+  <--- Turns The Printer Feature "ON"');
  358.   Writeln('           /PR-  <--- Turns The Printer Feature "OFF"');
  359.   Writeln('           /PP+  <--- Turns The PRIVATE BBS Feature "ON"');
  360.   Writeln('           /PP-  <--- Turns The PRIVATE BBS Feature "OFF"');
  361.   Writeln('           /SP+  <--- Turns The Second Password Feature "ON"');
  362.   Writeln('           /SP-  <--- Turns The Second Password Feature "OFF"');
  363.   Writeln('           /H    <--- Displays This Help Screen');
  364.   Writeln(' ');
  365.   Writeln('Bulletin Name Is OPTIONAL!  If Not Used The Program Will Default');
  366.   Writeln('To ALL.BBS & ALL.CLR');
  367.   Writeln(' ');
  368.   Writeln('Example: BFPAGE.EXE /P+ /PP- /SP+ /PR+ Welcome4');
  369.   Writeln(' ');
  370.   Writeln('Any Valid SPITFIRE display screen can be used');
  371.   halt(1);
  372. end;
  373.  
  374. Procedure ParamStatus;
  375.   begin
  376.   if ParamCount >5 then ParamError;
  377.   if ParamCount <= 0 then ParamError;
  378.   if (ParamStr(1) = '/H') or (ParamStr(1) = '/h') then HelpScreen;
  379.   end;
  380.  
  381. Begin; {Starts the program}
  382.   Clrscr;
  383.   RegistrationInfo;
  384.   Assign(UF,'SFNODE.DAT');
  385.   FileMode:=2; {Sets filemode to Read/Write}
  386.   {$I-}Reset(UF);{$I+}
  387.   if IOResult<>0 then {Checks for SFNODE.DAT}
  388.     begin
  389.       gotoxy(5,9);
  390.       writeln('Sorry... SFNODE.DAT not Found!');
  391.       Sound(900);
  392.       Delay(500);
  393.       NoSound;
  394.       Halt(1);
  395.     end;
  396.   FileMode:=2;
  397.   Read(UF,Page);
  398.   ParamStatus;
  399.   MakeMyLogo;
  400.   ChangeStatus;
  401.   Close(UF);
  402.     If IOResult<>0 Then TextColor(7);  {Resets screen color to default}
  403. end. {End the program}
  404.  
  405.  
  406.  
  407.